<?php
/**
 * 好友模块
 * 
 * @version $Id$
 */

class Module_friend
{
	/**
	 * 构造函数
	 */
	function __construct() {
		
	}

	
	function index() {
		$smarty = loadSmarty();
		return $smarty->fetch('friend/index.tpl.php');
	}
	
	/**
	 * 好友首页，查看好友列表
	 */
	function showlist() {
		$uin = isset($_GET['uin']) ? intval($_GET['uin']) : null;
		
		// 如果没有uin参数，则显示自己的个人主页
		if(empty($uin)) {
			$uin = $GLOBALS['CORE']['class']['Session']->getUin();
		}
		
		$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
		if($page < 1) {
			$page = 1;
		}
		
		$smarty = loadSmarty();
		
		loadLib('Friend');
		$friend_list = Friend::get(SessionInfo('uin'));
		
		$total = count($friend_list);
		$friend_list_show = array();
		$per_page = 10;
		$offset = ($page - 1) * $per_page;
		$end = Min($offset + $per_page , $total);
		for($i = $offset ; $i < $end ; $i++) {
			$friend_list_show[] = $friend_list[$i];
		}
		
		
		// 获取用户数据
		loadLib('User');
		$friend_list_info = User::getBaseInfo($friend_list_show);
		
		$smarty->assign('friend_list' , $friend_list_info);
		$smarty->assign('total' , $total);
		$smarty->assign('per_page' , $per_page);

		return $smarty->fetch('friend/showlist.tpl.php');
	}
	
	/**
	 * 发送好友申请
	 */
	function apply() {
		$session = loadLib('Session');
		
		$uin = isset($_POST['uin']) ? intval($_POST['uin']) : null;
		$login_uin = $session->getUin();
		
		// 检查uin是否合法
		if(empty($uin)) {
			return View::error('参数错误');
		}
		
		// 自己加自己
		if($uin == $login_uin) {
			return View::error('不能加自己为好友');
		}
		
		// 获取对方用户资料
		// ..todo
		
		// 检查双方的好友上限
		// ..todo
		
		// 发送好友申请
		loadLib('SysMsg');
		$code = SysMsg::sendFriend($uin , $login_uin);
		
		if($code === 0) {
			return View::success('发送好友请求成功' , array(
				array('name' => '返回他的个人主页' , 'url' => '/?m=profile&amp;uin=' . $uin . '&amp;sid=' . $session->getSkey()),
			));
		} else {
			return View::error('系统繁忙，请稍后再试' , $code);
		}
	}
	
	/**
	 * 好友首页，查看好友列表
	 */
	function delete() {
		$uin = isset($_POST['uin']) ? intval($_POST['uin']) : null;
		
		// 如果没有uin参数，则显示自己的个人主页
		if(empty($uin)) {
			return View::error('参数错误');
		}
		
		$smarty = loadSmarty();
		
		loadLib('Friend');
		if( !Friend::isFriend(SessionInfo('uin') , $uin) ) {
			return View::error('你们不是好友关系');
		}
		
		$code = Friend::delete(SessionInfo('uin') , $uin);
		
		return $code === 0 ? View::success('解除好友关系成功') : View::error('解除好友关系失败，请稍后再试' , $code);
	}
}

# end of script
